package org.example.exception;

import org.example.pojo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * 全局异常处理器
 */
@RestControllerAdvice
public class GlobalExceptionHandler {

    // 全局异常
    @ExceptionHandler(Exception.class)
    public Result baseExceptionHandler(Exception e){
        e.printStackTrace();
        // 先判断是否有错误信息，如果存在则直接返回，没有就统一返回“操作失败”  错误信息可以自定义异常
        return Result.error(StringUtils.hasLength(e.getMessage())?e.getMessage():"操作失败");
        //return Result.error("操作失败");
    }

    // 自定义异常
//    @ExceptionHandler
//    public Result baseExceptionHandler(BaseException e){
//        e.printStackTrace();
//        return Result.error(e.getMessage());
//    }

    // 校验注解异常
//    @ExceptionHandler
//    public Result baseExceptionHandler(MethodArgumentNotValidException e){
//        e.printStackTrace();
//        return Result.error(e.getBindingResult().getFieldError().getDefaultMessage());
//    }

}
